Don't hang on malformed UTF-16 input.
authorrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Tue, 16 Dec 2014 15:49:54 +0000 (15:49 +0000)
committerrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Tue, 16 Dec 2014 15:49:54 +0000 (15:49 +0000)
gpsbabel/gbfile.cc

index 4afd6e99005eb1d2f33e6542fba59b04ff0349ca..22fc16b40ff7d081aa1f454fdc953c31b98ddc95 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "defs.h"
 #include "gbfile.h"
+#include "src/core/logging.h"
 
 #include <assert.h>
 #include <stdio.h>
@@ -1083,6 +1084,10 @@ gbfgetucs2str(gbfile* file)
     }
 
     clen = cet_ucs4_to_utf8(buff, sizeof(buff), c0);
+    if (clen < 1) {
+      Warning() << "Malformed UCS character" << c0 << "found.";
+      return NULL;
+    }
 
     if (len+clen >= file->buffsz) {
       file->buffsz += 64;